# -*- coding:utf-8 -*-
# title           :
# description     :
# author          :Python超人/三月三提供
# date            :2024-08-02
# link            :https://gitcode.net/pythoncr/
# python_version  :3.9
# ==============================================================================
import os

from 神笔码靓.码靓库.共用.诗经集 import 三字经
from 神笔码靓.神笔库 import 样式工具集
from 神笔码靓.神笔库.神笔绘图板 import 神笔绘图板
from 神笔码靓.神笔库.定义集 import *
from 神笔码靓.神笔库.配置 import *
from 神笔码靓.神笔库.通用工具集 import *

from 神笔码靓.码靓库.绘画.手机文字像素艺术画 import 手机文字像素艺术画


def 批量生成():
    三字经_ = 三字经.strip().replace("\n", "").replace("，", "").replace("。", 全角空格)

    三字经_ = 全角空格 * 11 + f"三{全角空格}字{全角空格}经" + 全角空格 * 12 \
           + 全角空格 * 28 + 三字经_

    # 图片左移像素 = 0
    # # 图片路径, 图片左移像素 = 资源库目录("图片/女儿国国王.jpg"), 60
    # 图片路径 = 资源库目录("图片/手机壁纸1.jpg")
    # 图片路径 = 资源库目录("图片/手机壁纸2.jpg")
    # 图片路径 = 资源库目录("图片/手机壁纸3.jpg")
    # 图片路径 = 资源库目录("图片/手机壁纸5.jpg")

    # for 图片信息 in [("女儿国国王.jpg", 60), "手机壁纸1.jpg", "手机壁纸2.jpg", "手机壁纸3.jpg", "手机壁纸4.jpg"]:
    for 索引号 in 范围(1, 10):
        图片信息 = f"手机壁纸{索引号}.jpg"
        if 对象是此种类型(图片信息, tuple):
            图片名, 图片左移像素 = 图片信息
        else:
            图片名, 图片左移像素 = 图片信息, 0
        图片路径 = 资源库目录(f"图片/手机壁纸/{图片名}")
        作品文件名, _ = 获取文件路径的文件名和扩展名(图片路径)
        神笔 = 手机文字像素艺术画(作品文件路径=作品文件名 + ".svg", 文字内容=三字经_, 图片路径=图片路径,
                       像素列数=31, 左空字数=2, 右空字数=1, 上字空数=4, 图片左移像素点=图片左移像素)
        神笔.完成()
        神笔.生成PNG(缩放=1)


def 单个生成():
    三字经_ = 三字经.strip().replace("\n", "").replace("，", "").replace("。", 全角空格)

    三字经_ = 全角空格 * 11 + f"三{全角空格}字{全角空格}经" + 全角空格 * 12 \
           + 全角空格 * 28 + 三字经_

    for 图片信息 in [("手机壁纸/超级玛丽.jpg")]:  # [("女儿国国王.jpg", 85)]:
        if 对象是此种类型(图片信息, tuple):
            图片名, 图片左移像素 = 图片信息
        else:
            图片名, 图片左移像素 = 图片信息, 0
        图片路径 = 资源库目录(f"图片/{图片名}")
        作品文件名, _ = 获取文件路径的文件名和扩展名(图片路径)
        神笔 = 手机文字像素艺术画(作品文件路径=作品文件名 + ".svg", 文字内容=None, 图片路径=图片路径,
                       像素形状="心形像素", 像素缩放=1,
                       # 像素形状="圆像素", 像素缩放=1.,
                       # 像素形状="四边形像素", 像素缩放=1.5,
                       # 像素形状="五边形像素", 像素缩放=1.5,
                       # 像素形状="六边形像素", 像素缩放=1.5,
                       # 像素形状="菱形像素", 像素缩放=2.,
                       # 像素形状="倒角方",
                       像素透明度=1,
                       # 亮度控制像素大小的颜色="black",
                       像素列数=50, 左空字数=2, 右空字数=1, 上字空数=4, 图片左移像素点=图片左移像素)
        神笔.完成()
        神笔.生成PNG(缩放=1)


def 密度像素画():
    def calculate_luminance(r, g, b):
        return 0.299 * r + 0.587 * g + 0.114 * b

    def calculate_grayscale(r, g, b):
        return (r + g + b) / 3

    for 图片信息 in [("wyh.jpg")]: # [("手机壁纸/超级玛丽.jpg"), ("女儿国国王.jpg", 85)]:  # [("女儿国国王.jpg", 85)]:
        if 对象是此种类型(图片信息, tuple):
            图片名, 图片左移像素 = 图片信息
        else:
            图片名, 图片左移像素 = 图片信息, 0
        图片路径 = 资源库目录(f"图片/{图片名}")
        作品文件名, _ = 获取文件路径的文件名和扩展名(图片路径)
        神笔 = 手机文字像素艺术画(作品文件路径=作品文件名 + "_$1.svg", 文字内容=None, 图片路径=图片路径,
                       像素形状="心", 像素缩放=1,
                       # 像素形状="圆", 像素缩放=1.,
                       # 像素形状="四边形", 像素缩放=1.5,
                       # 像素形状="五边形", 像素缩放=1.5,
                       # 像素形状="六边形", 像素缩放=1.5,
                       # 像素形状="菱型", 像素缩放=2.,
                       # 像素形状="倒角方",
                       像素透明度=1,
                       自己来控制像素=是,
                       像素列数=60, 左空字数=2, 右空字数=1, 上字空数=4, 图片左移像素点=图片左移像素)

        def 亮度值控制形状大小(圆像素形状, 像素尺寸大小, 颜色RGB):
            r, g, b = 颜色RGB
            # 像素尺寸大小 = calculate_grayscale(r, g, b)
            亮度值 = calculate_luminance(r, g, b)
            亮度率 = 亮度值 / 255
            暗度率 = 1 - 亮度率  # 像素尺寸大小和暗度率成正比
            # if 暗度率 < 0.5:
            #     圆像素形状="心"
            # elif 暗度率 < 0.7:
            #     圆像素形状 = "圆"
            # else:
            #     圆像素形状="倒角方"
            像素尺寸大小 = 神笔.圆像素宽 * 暗度率 / 1.5
            填充颜色 = "black"
            return 圆像素形状, 像素尺寸大小, 填充颜色

        def 获取文字排序密度列表():
            if hasattr(神笔, "排序后的列表"):
                return getattr(神笔, "排序后的列表")
            # 文字列表 = "∷♂◎±ⅹ入八火尘千水齐马旺妤想象魏艚"
            文字列表 = "∷♂◎±ⅹ入八火尘千水齐姣涵语陈刚象魏艚"
            #  花0.65 车0.68 老0.71 菜0.76 师0.78 滑0.81 糊0.87  黄0.93  齐0.6 涵0.71 语0.71
            文字列表 = "∷♂◎±ⅹ入八火尘千水齐花狐虾车老菜师滑尾象糊黄艚"  # 姣0.66 "狐0.67 虾0.68 尾0.84  象0.85 魏0.9"

            文字列表 = 文字列表[::-1]  # 倒序字符串
            文字列表 = list(文字列表)
            setattr(神笔, "排序后的列表", 文字列表)
            return 文字列表

        def 亮度值控制文字密度(圆像素形状, 像素尺寸大小, 颜色RGB):
            r, g, b = 颜色RGB
            # 灰度值 = calculate_grayscale(r, g, b)
            亮度值 = calculate_luminance(r, g, b)
            亮度率 = 亮度值 / 255
            暗度率 = 1 - 亮度率
            # 像素尺寸大小 = 神笔.圆像素宽 * 暗度率 / 1.5
            # 根据面积排序
            排序后的列表 = 获取文字排序密度列表()
            填充颜色 = "black"
            填充颜色 = "white"
            文字索引 = int(round(暗度率 * len(排序后的列表) - 1, 0))
            # print(文字索引)
            return 排序后的列表[文字索引], 像素尺寸大小 * 2, 填充颜色

        神笔.控制像素的形状大小颜色 = 亮度值控制文字密度

        def 完成前执行():
            背景黑 = 神笔.画矩形(x=0, y=0, 宽=神笔.宽, 高=神笔.高, 填充颜色=颜色.黑色)
            开始位置 = (神笔.宽, 神笔.高)
            结束位置 = (0, 0)
            渐变色 = 神笔.创建彩虹线性渐变色(开始位置=开始位置, 结束位置=结束位置,
                               关键点偏移=(0, 1.0), 关键点透明度=1, 彩虹七色=样式工具集.彩虹色2)
            矩形 = 神笔.画矩形(x=0, y=0, 宽=神笔.宽, 高=神笔.高, 填充颜色=渐变色, 描边宽度=0)
            裁剪元素_ = 神笔.创建组合(元素列表=神笔.像素元素列表)
            神笔.遮罩(遮罩元素_=裁剪元素_, 被遮元素=矩形)

        神笔.完成前执行 = 完成前执行

        def 修改文件名(原始文件名: str):
            return 原始文件名.replace("$1", "文字像素艺术")

        神笔.修改文件名 = 修改文件名
        神笔.完成()
        # 神笔.生成PNG(缩放=1)


# if __name__ == '__main__':
#     # 单个生成()
#     # 批量生成()
#     密度像素画()
